package sms

// BaoProcessStatus 短信处理状态
type BaoProcessStatus int

// LuoSiMaoProcessStatus 螺丝冒短信处理状态
type LuoSiMaoProcessStatus int

// 短信宝处理状态
const (
	// BaoWrongPassword 错误密码
	BaoWrongPassword BaoProcessStatus = 30
	// BaoAccountNotExist 账号不存在
	BaoAccountNotExist BaoProcessStatus = 40
	// BaoInsufficientBalance 余额不足
	BaoInsufficientBalance BaoProcessStatus = 41
	// BaoIPAddressRestriction IP地址限制
	BaoIPAddressRestriction BaoProcessStatus = 43
	// BaoHasSensitiveWords 含有敏感词
	BaoHasSensitiveWords BaoProcessStatus = 50
	// BaoIncorrectMobileNumber 手机号码不正确
	BaoIncorrectMobileNumber BaoProcessStatus = 51
	// BaoOther 其他
	BaoOther BaoProcessStatus = -1
	// BaoSuccess 成功
	BaoSuccess BaoProcessStatus = 0
)

const (
	// LuoVerificationFailed 验证信息失败: 检查api key是否和各种中心内的一致，调用传入是否正确
	LuoVerificationFailed LuoSiMaoProcessStatus = -10
	// LuoUserDisabled 用户接口被禁用:滥发违规内容，验证码被刷等，请联系客服解除
	LuoUserDisabled LuoSiMaoProcessStatus = -11
	// LuoBalanceFreeze 余额冻结: 长期未使用或其他原因，冻结触发接口，可在后台短信->触发发送下进行解冻操作
	LuoBalanceFreeze LuoSiMaoProcessStatus = -12
	// LuoInsufficientBalance 余额不足
	LuoInsufficientBalance LuoSiMaoProcessStatus = -20
	// LuoMessageEmpty 短信内容为空:检查调用传入参数：message
	LuoMessageEmpty LuoSiMaoProcessStatus = -30
	// LuoContainsSensitiveWords 含有敏感词
	LuoContainsSensitiveWords LuoSiMaoProcessStatus = -31
	// LuoMissingSign 短信内容缺少签名信息
	LuoMissingSign LuoSiMaoProcessStatus = -32
	// LuoContentTooLong 内容太长超过300字
	LuoContentTooLong LuoSiMaoProcessStatus = -33
	// LuoSignTestRestricted 测试签名受限
	LuoSignTestRestricted LuoSiMaoProcessStatus = -34
	// LuoInvalidPhoneNumber 错误手机号码
	LuoInvalidPhoneNumber LuoSiMaoProcessStatus = -40
	// LuoInBlackList 列入黑名单中
	LuoInBlackList LuoSiMaoProcessStatus = -41
	// LuoSendFrequencyTooFast 短信发送频率太快：前台增加60秒获取限制
	LuoSendFrequencyTooFast LuoSiMaoProcessStatus = -42
	// LuoIPNotInWhiteList 请求IP不在白名单内
	LuoIPNotInWhiteList LuoSiMaoProcessStatus = -50
	// LuoSuccess 发送成功
	LuoSuccess LuoSiMaoProcessStatus = 0
	// LuoOther 其他
	LuoOther LuoSiMaoProcessStatus = -1
)

var (
	// LuoSiMaoProcessStatusMap 螺丝帽短信处理状态
	LuoSiMaoProcessStatusMap = map[LuoSiMaoProcessStatus]string{
		LuoVerificationFailed:     "验证信息失败: 检查api key是否 various center",
		LuoUserDisabled:           "用户接口被禁用:滥发违规内容，验证码被刷等，请联系客服解除",
		LuoBalanceFreeze:          "余额冻结: 长期未使用或其他原因，冻结触发接口，可在后台短信->触发发送下进行解冻操作",
		LuoInsufficientBalance:    "余额不足",
		LuoMessageEmpty:           "短信内容为空:检查调用传入参数：message",
		LuoContainsSensitiveWords: "含有敏感词",
		LuoMissingSign:            "短信内容缺少签名信息",
		LuoContentTooLong:         "内容太长超过300字",
		LuoSignTestRestricted:     "测试签名受限",
		LuoInvalidPhoneNumber:     "错误手机号码",
		LuoInBlackList:            "列入黑名单中",
		LuoSendFrequencyTooFast:   "短信发送频率太快：前台增加60秒获取限制",
		LuoIPNotInWhiteList:       "请求IP不在白名单内",
		LuoSuccess:                "发送成功",
		LuoOther:                  "其他",
	}
	// BaoProcessStatusMap 短信宝处理状态
	BaoProcessStatusMap = map[BaoProcessStatus]string{
		BaoWrongPassword:         "错误密码",
		BaoAccountNotExist:       "账号不存在",
		BaoInsufficientBalance:   "余额不足",
		BaoIPAddressRestriction:  "IP地址限制",
		BaoHasSensitiveWords:     "含有敏感词",
		BaoIncorrectMobileNumber: "手机号码不正确",
		BaoSuccess:               "发送成功",
		BaoOther:                 "其他",
	}
)

// ToBaoDescription 短信处理状态描述
func (p BaoProcessStatus) ToBaoDescription() string {
	return BaoProcessStatusMap[p]
}

// ToLuoDescription 螺丝帽短信处理状态描述
func (s LuoSiMaoProcessStatus) ToLuoDescription() string {
	return LuoSiMaoProcessStatusMap[s]
}
